<?xml version="1.0" encoding="utf-8"?>
<schema targetNamespace="http://www.opengis.net/ows/2.0"
        xmlns:ows="http://www.opengis.net/ows/2.0"
        xmlns="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified"
        version="2.0.1"
        xml:lang="en">
  <annotation>
    <appinfo>owsOperationsMetadata.xsd 2011-10-21</appinfo>
    <documentation>This XML Schema Document encodes the basic contents of the
    "OperationsMetadata" section of the GetCapabilities operation response,
    also known as the Capabilities XML document.

    OWS is an OGC Standard.
    Copyright (c) 2009 Open Geospatial Consortium, Inc. All Rights Reserved.
    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
    </documentation>
  </annotation>
  <!-- ==============================================================
                includes and imports
        ============================================================== -->
  <include schemaLocation="owsCommon.xsd" />
  <include schemaLocation="ows19115subset.xsd" />
  <include schemaLocation="owsDomainType.xsd" />

  <!-- ==============================================================
                elements and types
        ============================================================== -->
  <element name="OperationsMetadata">
    <annotation>
      <documentation>Metadata about the operations and related abilities
      specified by this service and implemented by this server, including the
      URLs for operation requests. The basic contents of this section shall be
      the same for all OWS types, but individual services can add elements
      and/or change the optionality of optional elements.</documentation>
    </annotation>
    <complexType>
      <sequence>
        <element ref="ows:Operation"
                 minOccurs="2"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Metadata for unordered list of all the (requests
            for) operations that this server interface implements. The list of
            required and optional operations implemented shall be specified in
            the Implementation Specification for this service.</documentation>
          </annotation>
        </element>
        <element name="Parameter"
                 type="ows:DomainType"
                 minOccurs="0"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Optional unordered list of parameter valid domains
            that each apply to one or more operations which this server
            interface implements. The list of required and optional parameter
            domain limitations shall be specified in the Implementation
            Specification for this service.</documentation>
          </annotation>
        </element>
        <element name="Constraint"
                 type="ows:DomainType"
                 minOccurs="0"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Optional unordered list of valid domain constraints
            on non-parameter quantities that each apply to this server. The
            list of required and optional constraints shall be specified in
            the Implementation Specification for this service.</documentation>
          </annotation>
        </element>
        <element ref="ows:ExtendedCapabilities"
                 minOccurs="0" />
      </sequence>
    </complexType>
  </element>
  <!-- ========================================================== -->
  <element name="ExtendedCapabilities"
           type="anyType">
    <annotation>
      <documentation>Individual software vendors and servers can use this
      element to provide metadata about any additional server
      abilities.</documentation>
    </annotation>
  </element>
  <!-- ========================================================== -->
  <element name="Operation">
    <annotation>
      <documentation>Metadata for one operation that this server
      implements.</documentation>
    </annotation>
    <complexType>
      <sequence>
        <element ref="ows:DCP"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Unordered list of Distributed Computing Platforms
            (DCPs) supported for this operation. At present, only the HTTP DCP
            is defined, so this element will appear only once.</documentation>
          </annotation>
        </element>
        <element name="Parameter"
                 type="ows:DomainType"
                 minOccurs="0"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Optional unordered list of parameter domains that
            each apply to this operation which this server implements. If one
            of these Parameter elements has the same "name" attribute as a
            Parameter element in the OperationsMetadata element, this
            Parameter element shall override the other one for this operation.
            The list of required and optional parameter domain limitations for
            this operation shall be specified in the Implementation
            Specification for this service.</documentation>
          </annotation>
        </element>
        <element name="Constraint"
                 type="ows:DomainType"
                 minOccurs="0"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Optional unordered list of valid domain constraints
            on non-parameter quantities that each apply to this operation. If
            one of these Constraint elements has the same "name" attribute as
            a Constraint element in the OperationsMetadata element, this
            Constraint element shall override the other one for this
            operation. The list of required and optional constraints for this
            operation shall be specified in the Implementation Specification
            for this service.</documentation>
          </annotation>
        </element>
        <element ref="ows:Metadata"
                 minOccurs="0"
                 maxOccurs="unbounded">
          <annotation>
            <documentation>Optional unordered list of additional metadata
            about this operation and its' implementation. A list of required
            and optional metadata elements for this operation should be
            specified in the Implementation Specification for this service.
            (Informative: This metadata might specify the operation request
            parameters or provide the XML Schemas for the operation
            request.)</documentation>
          </annotation>
        </element>
      </sequence>
      <attribute name="name"
                 type="string"
                 use="required">
        <annotation>
          <documentation>Name or identifier of this operation (request) (for
          example, GetCapabilities). The list of required and optional
          operations implemented shall be specified in the Implementation
          Specification for this service.</documentation>
        </annotation>
      </attribute>
    </complexType>
  </element>
  <!-- ========================================================== -->
  <element name="DCP">
    <annotation>
      <documentation>Information for one distributed Computing Platform (DCP)
      supported for this operation. At present, only the HTTP DCP is defined,
      so this element only includes the HTTP element.</documentation>
    </annotation>
    <complexType>
      <choice>
        <element ref="ows:HTTP" />
      </choice>
    </complexType>
  </element>
  <!-- ========================================================== -->
  <element name="HTTP">
    <annotation>
      <documentation>Connect point URLs for the HTTP Distributed Computing
      Platform (DCP). Normally, only one Get and/or one Post is included in
      this element. More than one Get and/or Post is allowed to support
      including alternative URLs for uses such as load balancing or
      backup.</documentation>
    </annotation>
    <complexType>
      <choice maxOccurs="unbounded">
        <element name="Get"
                 type="ows:RequestMethodType">
          <annotation>
            <documentation>Connect point URL prefix and any constraints for
            the HTTP "Get" request method for this operation
            request.</documentation>
          </annotation>
        </element>
        <element name="Post"
                 type="ows:RequestMethodType">
          <annotation>
            <documentation>Connect point URL and any constraints for the HTTP
            "Post" request method for this operation request.</documentation>
          </annotation>
        </element>
      </choice>
    </complexType>
  </element>
  <!-- ========================================================== -->
  <complexType name="RequestMethodType">
    <annotation>
      <documentation>Connect point URL and any constraints for this HTTP
      request method for this operation request. In the OnlineResourceType,
      the xlink:href attribute in the xlink:simpleLink attribute group shall
      be used to contain this URL. The other attributes in the
      xlink:simpleLink attribute group should not be used.</documentation>
    </annotation>
    <complexContent>
      <extension base="ows:OnlineResourceType">
        <sequence>
          <element name="Constraint"
                   type="ows:DomainType"
                   minOccurs="0"
                   maxOccurs="unbounded">
            <annotation>
              <documentation>Optional unordered list of valid domain
              constraints on non-parameter quantities that each apply to this
              request method for this operation. If one of these Constraint
              elements has the same "name" attribute as a Constraint element
              in the OperationsMetadata or Operation element, this Constraint
              element shall override the other one for this operation. The
              list of required and optional constraints for this request
              method for this operation shall be specified in the
              Implementation Specification for this service.</documentation>
            </annotation>
          </element>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <!-- ========================================================== -->
</schema>
